"""
演示可视化需求1：折线图开发
"""
import json
import os
from pyecharts.charts import Line
from pyecharts.options import TitleOpts, LegendOpts, LabelOpts

current_path = os.getcwd()

# 处理数据
try:
    f_us = open(current_path + "/美国.txt", "r", encoding="UTF-8")
    us_data = f_us.read()  # 美国的全部内容
    f_jp = open(current_path + "/日本.txt", "r", encoding="UTF-8")
    jp_data = f_jp.read()  # 日本的全部内容
    f_in = open(current_path + "/印度.txt", "r", encoding="UTF-8")
    in_data = f_in.read()  # 印度的全部内容
except Exception as e:
    print(f"读取数据出错：{e}，错误类型：{type(e)}")
else:
    # 关闭文件
    f_us.close()
    f_jp.close()
    f_in.close()
# 去掉不合规的json开头
us_data = us_data.replace("jsonp_1629344292311_69436(", "")
jp_data = jp_data.replace("jsonp_1629350871167_29498(", "")
in_data = in_data.replace("jsonp_1629350745930_63180(", "")
# 去掉不合规的json结尾
us_data = us_data[0:-2:1]
jp_data = jp_data[:-2]
in_data = in_data[:-2]
# json转Python字典
us_dict = json.loads(us_data)
jp_dict = json.loads(jp_data)
in_dict = json.loads(in_data)
# 获取日期数据，用于x轴，取2020年（到313下标结束）
x_data = us_dict['data'][0]['trend']['updateDate'][0:314:1]
# 获取确诊数据，用于y轴，取2020年的数据（到313下标结束）
us_y_data = us_dict['data'][0]['trend']['list'][0]['data'][0:314:1]
jp_y_data = jp_dict['data'][0]['trend']['list'][0]['data'][0:314:1]
in_y_data = in_dict['data'][0]['trend']['list'][0]['data'][0:314:1]

# 开始绘制折线图
line = Line()
# 添加x轴数据，x轴数据是共用的
line.add_xaxis(x_data)
# 添加y轴数据
line.add_yaxis("美国确诊人数", us_y_data, label_opts=LabelOpts(is_show=False))
line.add_yaxis("日本确诊人数", jp_y_data, label_opts=LabelOpts(is_show=False))
line.add_yaxis("印度确诊人数", in_y_data, label_opts=LabelOpts(is_show=False))
# 设置全局选项
line.set_global_opts(
    title_opts=TitleOpts(title="2020年美日印三国确诊人数对比折线图", pos_left="center", pos_bottom="1%"),
    legend_opts=LegendOpts(is_show=True)
)
# 调用render方法生成图表
line.render(path="各国确诊人数折线图.html")
